#ifndef __SYSMANAGE_H__
#define __SYSMANAGE_H__
#include"appconfig.h"

#define DEV_INFO_FILE			"devInfo"
#define PIC_DATA_FILE			"picdata"
#define PIC_DEVID_FILE		"devID"

#define SYS_EVT_WAKEUP (0x01<<0)//系统唤醒
#define SYS_EVT_VBATLOW (0X01<<1)//低电压
#define SYS_EVT_VBATFULL (0X01<<2)//满电

#define DEV_INIT_SAVE_FLAGE   0XAA
typedef struct 
{
	u8_t   url[32];//服务器url
	u32_t  cycle;//更新周期
	u8_t   regFlag;//在服务器注册成功的标志
	u16_t  port;//端口
	u32_t  mac;//设备的ID
	u8_t   save;
	u8_t   vbat;//剩余电量
	s8_t    csq;//信号值
	u32_t  flow;//使用了多少kB流量
	u16_t  charge;//充电次数
	u8_t   evt;//事件用于记录
	u32_t  adjust;//调整时间戳
}devInfodef;

typedef struct
{
	u8_t ssid[128];
	u8_t password[128];
}wifiConfigDef;

typedef enum
{
	SYS_SIMALA_HINT = (0X01 << 0),
	SYS_CSQALA_HINT = (0X01 << 1)
}SysInfoDef;

//注册状态
typedef enum
{
	SYS_RegNone = 0,
	SYS_RegOne = 1,
	SYS_RegFinsh = 2,
}SysRegStatuDef;

//线程任务
typedef enum
{
	PROT_TASK_WORK = (0X01 << 0),
	SHOW_TASK_WORK = (0X01 << 1),
	UPAPP_TASK_WORK = (0X01 << 2),
}taskWorkDef;

//系统睡眠时候保存的事件
typedef enum
{
	EVT_TCP_EXP = (0X01 << 0),//tcp异常
	EVT_SYS_UPDATE = (0X01 << 1),//系统升级
	EVT_NET_EXP = (0X01 << 2),//需要刷新屏幕,网络异常
	EVT_START_SHOW = (0X01 << 3), //开始更新
	EVT_SHOW_BATLOW = (0X01 << 4), //显示电量低
	EVT_SERVER_NOACK = (0X01 << 5),//服务器没有应答
	EVT_NOAP_HINT =  (0X01 << 6), //没有连接路由提示图片以显示
}SysEvtSleepDef;

void eeprom_load_data(u8_t *data);
void eeprom_save_data(u8_t *data);
void get_dev_mac(u8_t *id);
STATUS devinfo_loader(void);
STATUS devinfo_save(void);
devInfodef * devinfo_get(void);
void devinfo_set(devInfodef *data);
void update_rtc_value(u32_t date);
void date_show(time_t now);
u32_t cur_date_show(void);
void set_bkp1_reg(u16_t value);
void load_bkp_sys_flow(void);
void vbat_init_process(void);
void cycle_update_show(void);
void save_sysflow_bkp(void);
void save_bkp_askfail_num(u16_t value);
u16_t load_bkp_askfail_num(void);
void save_bkp_sysinfo(u16_t value);
u16_t load_bkp_sysinfo(void);
void eeprom_save_IDdata(u8_t *data);
void eeprom_load_IDdata(u8_t *data);
void set_system_stop_cycle(u32_t value);

void entry_work_task(u8_t flag);
void exit_work_task(u8_t flag);
u8_t is_entry_sleep(void);

void system_entry_deep_sleep(u32 value);

#endif
